﻿using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using System;
using ProyectoActivos.Daos;
using ProyectoActivos.Util;
using ProyectoActivos.Validate;
using ProyectoActivos.Const;

namespace ProyectoActivos.Forms.Mantenimiento
{
    public partial class FrmActualizarPeriodo : Form, IValidateForm
    {

        Periodo periodo;

        public Boolean CerroSinAccion { get; set; }

        private Boolean _valido;

        private PeriodoDAO periodoDAO; 

        public FrmActualizarPeriodo(Periodo periodo)
        {
            InitializeComponent();
            CerroSinAccion = true;
            this.periodo =periodo;
            periodoDAO = new PeriodoDAO();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
          

            _valido = true;
            errorProvider.Clear();
  
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtAnho, 15, errorProvider, this);
            FormsAssert.AssertComboBoxSelected(cmbMes, errorProvider, this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtDescripcion, 15, errorProvider, this);
         
            ActionExecutor.Execute(this, delegate
            {

                periodo.Fecha = new DateTime(int.Parse(txtAnho.Text), ((ItemGenericoComboBox)cmbMes.SelectedItem).Id, 1);
                periodo.Descripcion = txtDescripcion.Text;
                periodo.Cerrado = false;
                periodo.Estado = Estado.Activo;
                periodoDAO.Update(periodo);
                CerroSinAccion = false;
                Close();
            });
        }

        private void FrmActualizarPeriodo_Load(object sender, EventArgs e)
        {
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 1, Descripcion = "Enero" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 2, Descripcion = "Febrero" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 3, Descripcion = "Marzo" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 4, Descripcion = "Abril" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 5, Descripcion = "Mayo" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 6, Descripcion = "Junio" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 7, Descripcion = "Julio" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 8, Descripcion = "Agosto" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 9, Descripcion = "Septiembre" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 10, Descripcion = "Octubre" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 11, Descripcion = "Noviembre" });
            cmbMes.Items.Add(new ItemGenericoComboBox() { Id = 12, Descripcion = "Diciembre" });   

            _valido = true;
            if (periodo.Id != 0)
            {
                txtAnho.Text = periodo.Anho.ToString();
                cmbMes.SelectedIndex = ComboUtils.GetIndice(cmbMes, periodo.Mes);
                txtDescripcion.Text = periodo.Descripcion;
            }
            
        }

        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }
    }
}
